Amazon S3のGlacierアーカイブ機能を活用する
よく訓練されたアップル信者、都元です。話題は攫えないと分かりつつも、また小ネタいきます。
数ヶ月前のネタですが、Amazon S3において「自動的にGlacierにアーカイブする」という機能がリリースとなりました。Glacier単体では正直利用しづらかったものが、S3を介してGlacierを使えるようになったことで非常に使いやすいものになりました。とは言え、実際にこの機能を使った事がないと、使いどころのイメージも付けづらいと思います。
S3とGlacierのデータ保存コスト
実は、筆者は個人的に、このS3とGlacierの連携機能を利用しています。自宅で利用しているNAS QNAP TS-219P II には、ファイルを1日1回自動的にS3にアップロードしてバックアップを取る機能があります。この機能を利用して、家族の写真等、消えたら精神的打撃が大きなデータを 99.999999999%(イレブン・ナインと言うらしいです)の堅牢性を持つS3に送り込んでいます。個人的なデータを複数拠点レプリケーションできるなんて、夢のようじゃないですか。あまり考えたくないことですが、万一自宅が何らかの被災をしても、せめて写真等のデータだけは無傷で生き残るわけです。
しかし、バックアップ対象の総ファイルサイズは200GBほどあり、S3のTokyoリージョンにおけるStandardストレージ($0.100/GB)を利用すると、月々$20($1=90円とすると約1800円)のコストが掛かります。いくら堅牢なバックアップとは言え、個人ユースで毎月のお小遣いから1800円を捻出するのはちょっとアレな感じがしますね。しかも、多分使いだしたらバックアップをやめることは無いでしょう…。
しかし単なるバックアップ目的であれば、このGlacierアーカイブを使わない手はありません。ストレージ料金は$0.012/GB、つまり月々$2.4(約216円)まで圧縮できます。万一の際に取り出すのに3〜5時間掛かったって、まったく問題はないでしょう。ちなみに、GlacierもS3と同様、イレブン・ナインの堅牢性を持っています。
しかし、S3は使ったことがあるけどGlacierって難しそう。Vaultってナニ? とか私も思ってました。が、全く難しいことはありませんでした。S3経由でGlacierを使う場合、ざっくり言ってしまえば、Glacierというのは単なる「格納したファイルの状態の名前」でしかありません。Standard状態かGlacier状態か、そしてRestore状態か。Standard状態は、高いけど即時ダウンロードが可能。Glacier状態、は安いけどダウンロードには3〜5時間前に事前申請が必要。Restore状態は、申請の結果ダウンロード可能になった状態のこと。たったそれだけのことです。
S3からGlacierへのアーカイブ機能を実際に使ってみる
設定
まず、Glacierアーカイブを適用するS3バケットを作成します。そして、バケットのプロパティの中からLifecycleの項を表示します。
「Add rule」ボタンをクリックし、ダイアログを以下のように設定します。「Move to Glacier」ボタンをクリックすることにより、Time Period入力欄が現れます。ここでは、S3にアップロードしたファイルを1日でGlacierに移動させるという設定です。欲を言えば1日も待たずにさっさとGlacierに入れてしまっても構わないのですが、最小値が1なので仕方ありません。
設定が終わると、このようになります。
設定は以上です。
アップロード
このバケットにファイルをアップロードすると、そこから1日の間は通常のS3のように、自由にファイルをダウンロードできます。この状態はStandard状態ですね。
しかし、1日以上経過したファイルは、Storage ClassがGlacierになっています。
ダウンロード
Glacier状態では、普通にファイルをダウンロードしようとしても、このようにエラーとなってしまいます。
では、このファイルをダウンロードする必要が出て来たとします。そこで前述の事前申請「リストア」を行います。ダウンロードしたいファイルを選択し、メニューから「Initiate Restore」を選びます。
ダイアログに「ダウンロード可能にしたい期間」を日数で入力します。ここでは、7日間としてみました。
以上で、リストアのリクエストは完了です。3〜5時間後にはダウンロード出来る状態、つまりRestore状態になります。
詳細を見てみると「Restoration in progress」となっているのが分かります。
まぁ、ここからは2本くらい映画でも見ながら待ってください。映画を見終わった頃に再び詳細を覗くと、Storage ClassはGlacierのままですが、Restoredと表示されています。また、Restore状態の継続期間は先ほど設定した7日間です。この期間が経過すると、再びGlacier状態に戻ってしまいます。
まとめ
このように、S3経由でGlacierを使う場合は、Glacierの詳細についてはほとんど考える必要がありません。「EBSのスナップショットはS3に保存されている」と言っても、スナップショットを扱う時にS3について考える必要がないのと同じです。
ちなみに、料金についても、この方式でGlacierを使った場合は、S3の明細の中に組み込まれて表示されます。個人アカウントの利用状況なので、特にマスクせずに見せちゃいますね。今月のバックアップコストは約4ドル *1。安くないですか…?
多分、Glacierは単体で使うことはあまりなさそうな気がします。このエントリの内容さえ掴んでおけば、Glacierを使いこなしているも同然と言えるのではないでしょうか。
脚注
- NASがAPIへのリクエストを結構掛けているようなので、リクエスト料金が$1.5ほど掛かっています。また、1行目は、新規ファイルがGlacierアーカイブされるまでの1日分のS3ストレージ料金ですね。この辺りは誤差範囲と言えるでしょう。 ↩